/**********************************************************************************
 *
 *	文件名称：GetAbsVa.c
 * 	文件作用：调用后可以读取一次触摸屏信息，并将x和y值存在结构体absVa里
 * 	文件作者：WSY
 * 	修改日期：2023.12.27
 *  	注意事项：
 *
 *	版权声明：CopyRight (c)  @cecelmx.126.com  All Right Reserved
 * ********************************************************************************/

#include "head.h"

/// @brief 调用后会读取一次屏幕信息，将触摸屏获取到的x和y值传入全局变量结构体absVa
struct absVa getAbsVa()
{
    /*定义事件结构体*/
    struct input_event ts_event;
    struct absVa abs;
    /*判断条件，如果con等于2表示x和y都有值*/
    int con = 0;
    /*定义变量存储x和y的值*/
    // int tmp_x; // 临时存储x坐标
    // int tmp_y; // 临时存储y坐标

    while (1)
    {
        /*只要获取到一次有效数据则退出程序*/
        /*开始读取触摸屏数据*/
        read(event_fd, &ts_event, sizeof(ts_event)); // 每次读一次，读不到数据则不进行下一步，因为是阻塞

        /*开始分析信息，如果是触摸屏事件，并且x和y坐标都有值，则进行赋值和结束程序*/
        if (ts_event.type == EV_ABS && ts_event.code == ABS_X)
        {
            abs.va_x = ts_event.value; /*将x值存储起来*/
            con++;                     /*con值加1*/
        }
        if (ts_event.type == EV_ABS && ts_event.code == ABS_Y)
        {
            abs.va_y = ts_event.value; /*将x值存储起来*/
            con++;                     /*con值加1*/
        }
        /*如果x和y都有值，那么对结构体赋值并退出*/
        if (con >= 2)
        {
            break;
        }
    }

    return abs;
}
